﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Introduction</title>
</head>
<body>
    <h2>
        Introduction</h2>
    <p>
        The Genesis Smart Client Framework was developed by Blue Marble, a South African
        software development house. The framework was developed as the means of distributing
        an application to a large wide-spread audience over the internet.</p>
    <p>
        By providing a Dynamic Application Workspace the framework allowed the development
        team to focus on developing task specific modules, while the framework dealt with
        keeping client software up to date with the latest version of the modules, and provided
        users access to modules they were allowed to work with.</p>
    <p>
        This article is a step-by-step guide for writing your first Genesis Smart Client
        Framework application. I will guide you through the process of downloading the latest
        source code from <a title="Genesis Smart Client Project" href="http://genesissmartclient.codeplex.com/SourceControl/list/changesets#"
            target="_blank">Code Plex</a>.</p>
    <p>
        I will be making use of the latest source code release for Visual Studio 2010 and
        Microsoft.NET 4.0, however the same steps will apply for the Visual Studio 2008
        and Microsoft.NET 3.5SP1 version.</p>
    <h2>
        Download the latest source</h2>
    <p>
        To download the lastest version of the source code, go to <a title="Genesis Smart Client Project"
            href="http://genesissmartclient.codeplex.com/SourceControl/list/changesets" target="_blank">Code Plex</a>
        and download <strong>Genesis Source Code 1.60.1024.1 for Visual Studio 2010</strong>
        (<em><a title="Current Latest Version" href="http://genesissmartclient.codeplex.com/SourceControl/list/changesets#"
            target="_blank">current latest version</a></em>)</p>
    <p>
        <strong>UPDATE: I have just published the source code to the CodePlex Online Source
            Control. This provides easier access to the project, and more information on progress.
            It is available </strong><a title="Online Source Control" href="http://genesissmartclient.codeplex.com/SourceControl/list/changesets"
                target="_blank"><strong>here</strong></a><strong>.</strong></p>
    <p>
        I will be assuming, for the purpose of this article, that you are extracting the source code to
        C:\Genesis\</p>
    <h2>
        Step 1 - Build the Source Code and Deploy the Database</h2>
    <p>
        The first step after having extracted the source code is to build the project and
        to deploy the database.</p>
    <p>
        Once you have extracted the source code to C:\Genesis\, open Explorer and browse
        to C:\Genesis\Stable\. You will see the following directories</p>
    <ul>
        <li><strong>Code</strong> - Contains miscelanious projects </li>
        <li><strong>Databases</strong> - Contains database projects, including the CLR database
            project </li>
        <li><strong>Deployment</strong> - Contains the deployment system that ships with Genesis
            (<em>I'll do a whole article for this</em>) </li>
        <li><strong>Genesis Smart Framework</strong> - Most of the functional projects are in
            this folder </li>
        <li><strong>Scripts</strong> - Contains database scripts for the installer </li>
        <li><strong>Setup</strong> - Contains the setup project for the installer available
            on Code Plex </li>
        <li><strong>Solutions</strong> - Contains the solutions that make up Genesis </li>
        <li><strong>Web</strong> - Contains the web projects </li>
        <li><strong>WebService</strong> - Contains the web service project </li>
    </ul>
    <p>
        To build the solution, open the <strong>Solutions</strong> folder and go to the
        <strong>Genesis Smart Client Framework</strong> sub-folder. Open the <em>Genesis Smart
            Client Framework.sln</em> in Visual Studio 2010.</p>
    <img alt="Genesis Smart Client Framework Solution" src="GenesisSCFGettingStarted/GSCFGS003.png"
        complete="true" complete="true" />
    <p>
        When the solution opens for the first time you will be prompted to configure the
        database connection string.</p>
    <img alt="Configure Database Connection 1" src="GenesisSCFGettingStarted/GSCFGS004.png"
        complete="true" complete="true" />
    <p>
        Make sure, before you do this step, that you have created the database in SQL Server.</p>
    <img alt="Configure Database Connection 2" src="GenesisSCFGettingStarted/GSCFGS005.png"
        complete="true" complete="true" />
    <p>
        My local SQL server is located on <em>(local)\SQL</em>, change this to your SQL
        Server, including the authentication settings.</p>
    <p>
        When everything is setup, you should see the following solution in your Solution
        Explorer.</p>
    <img alt="Configure Database Connection 2" src="GenesisSCFGettingStarted/GSCFGS006.png"
        complete="true" complete="true" />
    <p>
        The <em>Genesis Smart Client Framework</em> solution is the central solution and
        contains all of the required project that encompass the Genesis Smart Client Framework.
        The following projects are included:</p>
    <ul>
        <li><strong>Genesis.Host</strong> - This project is the Windows Forms client application.
            It implements the required Genesis interfaces which enables it to connect to the
            Genesis server to get meta-data, and to host Genesis Hosted Applications. <em>This application
                will ensure that the libraries that make up the Hosted Applications are always up
                to date before executing them. This application also deals with user security and
                provides a working surface for the Hosted Applications.</em> </li>
        <li><strong>Genesis.Loader</strong> - This project is installed on client computers,
            generally using Click-Once. It connects to the Genesis.Filehost and downloads an
            XML file with installation instructions. This program then downloads all of the
            required files for the Genesis.Host and executes the host. <em>The purpose of this application
                is to enable light weight installations on client computers. This program is responsible
                for making sure that the Genesis.Host is always up to date, and the Genesis.Host
                makes sure its dependant Libraries (ie. Hosted Applications) are always up to date.</em>
        </li>
        <li><strong>Genesis.Client.Common</strong> - Common Client libraries. </li>
        <li><strong>Genesis.Client.Host</strong> - Client libraries specific to custom host
            implementations. </li>
        <li><strong>Genesis.Client.HostFormLibrary</strong> - Client libraries with specific
            standard forms for custom host implementations. </li>
        <li><strong>Genesis.Client.Module</strong> - Client library that contains all of the
            required interfaces and base classes for a Genesis Hosted Application. </li>
        <li><strong>Genesis.Client.Security</strong> - Client library that enables client applications
            to use Genesis for authentication. </li>
        <li><strong>BlueMarble.Genesis.sql</strong> - SQL project for the Genesis database.
        </li>
        <li><strong>GenesisDbClr</strong> - CLR database project for the Genesis database.
        </li>
        <li><strong>Genesis.Deployment</strong> - Deployment tool for Genesis Hosted Applications.
        </li>
        <li><strong>Genesis.Management.Web</strong> - Web based management system for the Genesis
            Smart Client Framework. <em>This application also serves as a sample implementation
                of a Genesis Hosted Application.</em> </li>
        <li><strong>Genesis.Management</strong> - This library is a Genesis Module (aka. Genesis
            Hosted Application). This library contains the logic needed to tell the client application
            how to behave. <em>This module serves as a sample implementation of a Genesis Hosted
                Application.</em> </li>
        <li><strong>Genesis.WebService</strong> - This web service contains all of the server-side
            logic that is exposed to the client implementations. </li>
        <li><strong>Genesis.FileHost</strong> - This web site serves as a HTTP file server.
            It contains the current versions of the Genesis.Host application, the Genesis Hosted
            Application library files and any files that your application would store centrally
            for all other clients to access. </li>
    </ul>
    <h3>
        Database Deployment</h3>
    <p>
        Deploy the <strong>BlueMarble.Genesis.SQL</strong> database project to the database
        that you have created. After you have deployed the database tables and stored procedures,
        browse to C:\Genesis\Stable\Scripts on your local computer and run the Data.SQL
        script against your database to setup the initial data. If you have deployment issues,
        you can run the scripts in the following sequence: <em>Tables.sql</em>, <em>StoredProcedures.sql</em>,
        <em>Assemblies.sql</em>, <em>Data.sql</em>.</p>
    <p>
        Once you've deployed the above, and scripted the initial data into the database,
        please run the following data fix to make some changes from the standard installation
        version to the source-only version:</p>
    <p>
        USE [Genesis]<br />
        GO
        <br />
        UPDATE Module_File SET FilePath = '..\..\Scripts\' WHERE FilePath = '.\Scripts\'
        <br />
        UPDATE Module_File SET FilePath = '..\..\Genesis Smart Framework\Genesis.Client.Host\bin\debug\'
        WHERE FilePath = '.\Client\'
        <br />
        UPDATE Module_File SET FilePath = '..\..\Resources\' WHERE FilePath = '..\Resources\'
        <br />
        UPDATE Module_File SET FilePath = '..\..\Code\Genesis.Management\bin\debug\' WHERE
        FilePath = '.\Management\'<br />
        UPDATE Module_File SET FileUrl = REPLACE(FileUrl, 'http://localhost/genesis.filehost/',
        'http://localhost:1581/genesis.filehost/')<br />
        UPDATE Module_File SET [FileName] = REPLACE([FileName], '.dll', '.dllx')<br />
        UPDATE Security_User SET StartupScript = 'http://localhost:1581/genesis.filehost/genesis/scripts/login.xml'</p>
    <p>
        <br />
        Deploy the <strong>GenesisDbClr</strong> CLR database project to the database that
        you have created. (<em>Ensure that your database has clr-enabled set to true</em>).
        If you have deployment issues, browse to C:\Genesis\Stable\Scripts on your local
        computer and run the Assemblies.SQL script against your database to create the CLR
        procedures.</p>
    <h3>
        Build the C# Code</h3>
    <p>
        You can now <strong>build</strong> the entire solution.</p>
    <p>
        If you have any errors during the build, check the configuration manager and remove
        the following projects from the build steps:</p>
    <ul>
        <li><strong>BlueMarble.Genesis.SQL</strong> - You've already built and deployed this,
            no need to keep building and deploying it. </li>
        <li><strong>GenesisDbClr</strong> - You've already built and deployed this, no need
            to keep building and deploying it. </li>
        <li><strong>Genesis.Installer</strong> - You're not installing it. </li>
        <li><strong>Genesis.Installer.Extensions</strong> - You're not installing it. </li>
    </ul>
    <h3>
        Final Configuration</h3>
    <p>
        You've now managed to deploy the database and build all of the source code, the
        last step would be to change the required database connection strings in the web
        and web service applications. Check the following applications for web.config or
        app.config files. Open the required file and check for the connection string to
        the Genesis database:</p>
    <ul>
        <li><strong>Genesis.WebService</strong> - <em>web.config</em> Update the value of the
            GenesisConnectionString to match your deployment settings </li>
        <li><strong>Genesis.FileHost</strong> - <em>web.config</em> Update the value of the
            GenesisConnectionString to match your deployment settings </li>
        <li><strong>Genesis.Web</strong> - <em>web.config</em> Update the value of the GenesisConnectionString
            to match your deployment settings </li>
    </ul>
    <p>
        In the <em>Genesis.FileHost</em> project, update the following key in the <em>web.config</em>
        file:
    </p>
    <p>
        &lt;add key=&quot;DevelopmentPath&quot; value=&quot;..\..\Assemblies\&quot;/&gt;
        to &lt;add key=&quot;DevelopmentPath&quot; value=&quot;<strong>.\</strong>&quot;/&gt;</p>
    <h2>
        Writing a Genesis Hosted Application</h2>
    <p>
        In order to write a Genesis Hosted Application we're going to build on the <strong>Template
            Solution</strong> provided with the Source Code. So the first step would be
        to browse to C:\Genesis\Stable\Solutions\Template Solution\ on your local computer
        and to open the <em>Template Solution.sln</em> in Visual Studio 2010. You should
        be presented with the following view.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS007.png" complete="true"
        complete="true" />
    <p>
        You will first notice a repeat of numerous of the projects from the previous solution.
        I'll exclude them here. The remainder of the projects are detailed below:</p>
    <ul>
        <li><strong>BlueMarble.Genesis.Client</strong> - A custom implementation of the Genesis
            Client API. This replaces the Genesis.Host application in the previous solution.
        </li>
        <li><strong>BlueMarble.Genesis.Client.Standard</strong> - Contains some standard Windows
            Forms used by the client application. </li>
        <li><strong>Genesis.Application</strong> - This C# Library implements all of the Genesis
            Client interfaces and is a Genesis Hosted Application. </li>
    </ul>
    <p>
        Set the Genesis.Application C# Library as the default startup project. Open the
        properties for this project and go to the Debug section. Set the <em>Start Action</em>
        to <em>Start external program</em> and set the program to start to <strong>c:\Genesis\Code
            Plex\Code\BlueMarble.Genesis.Client\bin\Debug\BlueMarble.Genesis.Client.exe</strong>.
        This will ensure that the custom Genesis Host implementation is started.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS009.png" complete="true"
        complete="true" />
    <p>
        You also have to set the <em>Build Events</em> <em>Post-build event command line</em>
        to <strong>start iexplore http://localhost:1581/genesis.filehost/update.aspx?DevelopmentPath=$(ProjectDir)
        </strong>and the <em>Run the post-build event</em> to <strong>When the build updates
            the project output</strong>.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS010.png" complete="true"
        complete="true" />
    <h3>
        Build and Run your Application</h3>
    <p>
        You should now be presented with the following output from your build:</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS011.png" complete="true"
        complete="true" />
    <p>
        In the image above, you will see all of the files that the Genesis File Host has
        collected after the build has completed. This will happen every time that your build
        changes and ensures that you are getting the latest version of the code while you
        are debugging. The reason that this is required is that the Genesis Client Host
        application will download and execute whatever code is currently on the server,
        so if you forget to update the server you will have endless problems trying to identify
        why your code is not debugging properly.</p>
    <p>
        <em>It is important to note that the update process will investigate the DLL files in
            the Development Path every time and it will update the File Version in the Module_File
            table to match the DLL. This means that you set the file version each time between
            a build to ensure that your client application downloads the latest version of the
            DLL when you debug. It is also important to note that your client application will
            NOT download a DLL if the local version matches the server version. It is important
            to change the version number each time you wish to build and test the results while
            debugging.</em></p>
    <p>
        You can close the browser with the update output now, and you will notice another
        window would have opened.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS008.png" complete="true"
        complete="true" />
    <p>
        Log in with the following username/password: <em>user1</em>/<em>user1</em>.</p>
    <p>
        Once the system has pre-authenticated you, you should notice that there is an Application
        in the combo box. The <em>Genesis Management System 2010</em> is used to configure
        the Genesis Smart Client Framework. Click <em>Sign in</em> to continue. Once the
        process is complete, you should see the following screen:</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS012.png" complete="true"
        complete="true" />
    <p>
        You have now successfully managed to compile the Genesis Smart Client Framework,
        and got the Genesis Management System 2010 up and running. You use the Genesis Management
        System 2010 to configure any new applications that Genesis can host. The next step
        is to take the Genesis.Application template provided with the Source Code and configure
        it so that we can run the Hosted Application.</p>
    <h2>
        Configuring the Template Application</h2>
    <p>
        To configure the Genesis.Application template, open the Genesis Administration menu,
        and click on the Application item.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS013.png" complete="true"
        complete="true" />
    <p>
        You will be presented with a list of the current Hosted Applications available on
        the Genesis Smart Client Framework server. Click on the <em>New Application</em>
        icon in the top right hand corner to create a new Hosted Application Configuration.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS014.png" complete="true"
        complete="true" />
    <p>
        Enter the following information into the provided fields:</p>
    <ul>
        <li><strong>Application Name</strong> - Enter a name for your application. </li>
        <li><strong>Description</strong> - Enter a description for your application. </li>
        <li><strong>Order</strong> - Enter the order that your application should be displayed
            when multiple applications are available. </li>
    </ul>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS015.png" complete="true"
        complete="true" />
    <p>
        Click the <em>Save</em> icon in the top right corner and proceed to the bottom half
        of the page to view the Security Roles that have access to your application. Select
        the following roles:</p>
    <ul>
        <li><strong>Registered Users</strong> </li>
        <li><strong>Genesis Application User</strong> </li>
    </ul>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS016.png" complete="true"
        complete="true" />
    <p>
        Proceed to open the <em>Genesis Administration</em> menu and clicking on the <em>File</em>
        menu item. You will be presented with the following screen, click on the <em>New File</em>
        icon in the top right hand corner.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS017.png" complete="true"
        complete="true" />
    <p>
        Enter the following information into the provided fields:</p>
    <ul>
        <li><strong>File Name</strong> - The name of the DLL that contains the Hosted Application.
            For the Template Application project the default name will be <em>Genesis.Application.dll</em>.
        </li>
        <li><strong>Type</strong> - For a DLL set the Type to Library. </li>
        <li><strong>Description</strong> - Enter a description for your file. </li>
        <li><strong>Application</strong> - Select the Application that you created from this
            list. </li>
        <li><strong>Order</strong> - The order in which the file is downloaded and processed
            by the client. </li>
        <li><strong>Path</strong> - The local path where the Genesis.FileHost update process
            picks up the file to process into the server file store. <em>The default for the Template
                Application is ..\..\Code\Genesis.Application\bin\Debug\</em> </li>
        <li><strong>Url</strong> - The online location where the Genesis.FileHost file store
            will make the file available. <em>The default for the Template Application is http://localhost:1581/genesis.filehost/myApp/libraries/Genesis.Application.dllx
            </em></li>
        <li><strong>Version</strong> - When adding a new DLL, simply enter 1.0.0.0 for the version.
            The Genesis.FileHost update process will automatically set the version number.
        </li>
    </ul>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS018.png" complete="true"
        complete="true" />
    <p>
        When you run the update process, <em>you can either right click on the Update.ASPX page
            in the Genesis.FileHost project and select 'View In Browser', or browse to http://localhost:1581/genesis.filehost/update.aspx
        </em>, you will see the following output, including Genesis.Application.dll
    </p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS019.png" complete="true"
        complete="true" />
    <p>
        Once this process has run, you can re-run the application, and log back into the
        <strong>Genesis Management System 2010</strong>. IMPORTANT: The default application
        should be your new application that you created! IT WILL FAIL if you attempt to
        log into this application.</p>
    <p>
        Once you are logged in, open the <em>Genesis Administration</em> menu and click
        on the <em>Commands</em> menu item. You will then be presented with the following
        screen where you can view all of the registered Commands:</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS020.png" complete="true"
        complete="true" />
    <p>
        The following changes have to be applied to the following Commands:</p>
    <ul>
        <li>Genesis.Application.Commands.ShowDefaultForm </li>
        <li>Genesis.Application.Commands.ShowMessage </li>
    </ul>
    <p>
        Open the Command, browse to the bottom of the page. There you will see a section
        where you can assign User Roles to each command. This will allow users belonging
        to that role to execute the Command on the Client Application.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS021.png" complete="true"
        complete="true" />
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS023.png" complete="true"
        complete="true" />
    <p>
        Click the <em>Save Command</em> icon in the top right corner of the page.</p>
    <p>
        Also check that the <em>Genesis.Common.ShowBrowser</em> Command has the <em>Registered
            Users</em> and the <em>Genesis Application Users</em> roles assigned to it.</p>
    <p>
        Because your application will be using components of the Genesis.Client.Host library,
        such as the built in Web Browser, you will need to define it as a required file
        of your application. To do this, open the <em>Genesis Administration</em> menu and
        click on the <em>Files</em> menu item. Click on the <em>New File</em> icon in the
        top right corner of the page.</p>
    <p>
        Enter the following information into the provided fields:</p>
    <ul>
        <li><strong>File Name</strong> - Genesis.Client.Host.dll </li>
        <li><strong>Type</strong> - Library. </li>
        <li><strong>Description</strong> - Genesis Client Host libraries for the Genesis Management
            System. </li>
        <li><strong>Application</strong> - Select the Application that you created from this
            list. </li>
        <li><strong>Order</strong> - 100. </li>
        <li><strong>Path</strong> - ..\..\Genesis Smart Framework\Genesis.Client.Host\bin\debug\
        </li>
        <li><strong>Url</strong> - http://localhost:1581/genesis.filehost/genesis/libraries/genesis.client.host.dllx
        </li>
        <li><strong>Version</strong> - 1.60.1024.1 </li>
    </ul>
    <p>
        Once you have registered the Genesis.Client.Host.dll file in the meta-data, you
        will have to add the Command entry for the <em>Genesis.Common.ShowBrowser</em> as
        well. Open the <em>Genesis Administration</em> menu and click on the <em>Commands</em>
        menu item. Click on the <em>New Command</em> icon in the top right corner of the
        page.</p>
    <p>
        Enter the following information into the provided fields:</p>
    <ul>
        <li><strong>File</strong> - Genesis.Client.Host.dll </li>
        <li><strong>Command Name</strong> - Web Browser. </li>
        <li><strong>Description</strong> - This command shows the web browser. </li>
        <li><strong>Type</strong> - Genesis.Client.Host.Commands.Common.ShowWebBrowser </li>
    </ul>
    <p>
        Click on the <em>Save</em> icon on the top right corner of the page, then add the
        following roles to the Command:</p>
    <ul>
        <li>Registered Users </li>
        <li>Genesis Application User </li>
    </ul>
    <p>
        You can now close the Genesis Management System 2010</p>
    <h2>
        You are ready to run your Genesis Hosted Application now!</h2>
    <p>
        You are now ready to run your custom Genesis Hosted Application. Press F5 to debug
        the application. On the login screen, enter <em>user1</em>/<em>user1</em> and select
        your application from the Application combo box then click on <em>Sign in</em>.</p>
    <p>
        Your application should run, and execute the users' startup script.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS024.png" complete="true"
        complete="true" />
    <p>
        You won't notice much of anything else though, however you have setup your project
        and you can start adding your own code to the Template Application now. Lets have
        a look at the Genesis.Application project.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS025.png" complete="true"
        complete="true" />
    <p>
        When we look at the files in the project, there are 4 files that require our attention:</p>
    <ul>
        <li><strong>AssemblyInfo.cs</strong> - Each time that you change the assembly, before
            you debug, you have to change the Version Number. </li>
        <li><strong>Commands\ShowDefaultForm.cs</strong> - A standard Genesis Command, this
            command shows the default form <em>Forms\DefaultForm.cs</em>. </li>
        <li><strong>Commands\ShowMessage.cs</strong> - A standard Genesis Command, this command
            uses System.Windows.Forms.MessageBox.Show to show a message using the parameters.
        </li>
        <li><strong>Forms\DefaultForm.cs</strong> - A standard Windows Forms form. This form
            is shown using the ShowDefaultForm Command. </li>
    </ul>
    <p>
        Using the <em>Genesis Management System 2010</em> you can configure the Menu and
        Toolbars in the Client Application to include references to your commands. These
        commands will only generate visible menu/toolbar endpoints if the authenticated
        user has access to see them.</p>
    <p>
        Re-run the Client Application again and this time log back into the <em>Genesis Management
            System 2010</em>. Open the <em>Genesis Administration</em> menu and click on
        the <em>Ribbon</em> menu item. Create a new Ribbon by clicking on the <em>Create Ribbon</em>
        icon in the top right corner of the page.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS026.png" complete="true"
        complete="true" />
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS027.png" complete="true"
        complete="true" />
    <p>
        Enter the following information into the provided fields:</p>
    <ul>
        <li><strong>Ribbon Name</strong> - My First Menu </li>
        <li><strong>Application</strong> - My First Genesis Application </li>
        <li><strong>Order</strong> - 100 </li>
    </ul>
    <p>
        Add the <em>Registered Users</em> and <em>Genesis Application Users</em> roles to
        this item.</p>
    <p>
        <em>Because the original framework was developed using a Ribbon Bar control, the configuration
            naming convention is oriented towards Ribbon layouts. However it is mapped onto
            a normal Menu/Toolbar configuration.</em></p>
    <p>
        Open the <em>Genesis Administration</em> menu and click on the <em>Ribbon Bars</em>
        menu item. Create a new Ribbon Bar by clicking on the <em>Create Ribbon Bar</em>
        icon in the top right corner of the page.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS028.png" complete="true"
        complete="true" />
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS029.png" complete="true"
        complete="true" />
    <p>
        Enter the following information into the provided fields:</p>
    <ul>
        <li><strong>Ribbon Bar Name</strong> - Seperator 1 </li>
        <li><strong>Application</strong> - My First Menu </li>
        <li><strong>Order</strong> - 100 </li>
    </ul>
    <p>
        Add the <em>Registered Users</em> and <em>Genesis Application Users</em> roles to
        this item.</p>
    <p>
        <em>Because of a difference between Ribbon Bar layouts and standard menu's, such as
            the one used by the Template Application and the custom Client Host Application.</em></p>
    <p>
        Open the <em>Genesis Administration</em> menu and click on the <em>Item</em> menu
        item. Create a new Bar Item by clicking on the <em>Create Bar Item</em> icon in
        the top right corner of the page.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS030.png" complete="true"
        complete="true" />
    <p>
        Enter the following information into the provided fields:</p>
    <ul>
        <li><strong>Bar Name</strong> - My Menu Item </li>
        <li><strong>Parent Bar Item</strong> - &lt;Root Item&gt; </li>
        <li><strong>Bar Item Type</strong> - Button Item </li>
        <li><strong>Ribbon Bar</strong> - Seperator 1 </li>
        <li><strong>Command</strong> - Default Form </li>
        <li><strong>Image</strong> - Select any image from the list, and enter <strong>16</strong>
            in the <em>Size</em> value. </li>
        <li><strong>Order</strong> - 100 </li>
    </ul>
    <p>
        Add the <em>Registered Users</em> and <em>Genesis Application Users</em> roles to
        this item.</p>
    <h2>
        Final Steps</h2>
    <p>
        If you re-run the application in debug mode, and this time sign into the <em>My First
            Genesis Application</em> Application, you will see a new Menu. Click on the
        <em>My First Menu</em> menu, then click on the <em>Menu</em> menu item.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS031.png" complete="true"
        complete="true" />
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS032.png" complete="true"
        complete="true" />
    <p>
        Fill in the fields and click on the <em>Show</em> button to execute the ShowMessage
        command.</p>
    <img alt="Template Solution" src="GenesisSCFGettingStarted/GSCFGS033.png" complete="true"
        complete="true" />
    <p>
        You have successfully created and hosted your first Genesis Hosted Application.
        Go ahead and customize it.</p>
    <p>
        In my next article I will continue where this article left off by creating a custom
        Twitter client that runs inside of the Genesis Smart Client Framework.</p>
    <h2>
        Other information</h2>
    <p>
        Blue Marble is proud to be a Microsoft BizSpark startup company. <a href="http://www.microsoftstartupzone.com/">
            <img src="http://www.microsoftstartupzone.com/bsdb/images/BizSparkDB_logo.jpg" border="0"
                complete="true" complete="true" />
        </a>
    </p>
    <p />
    <h2>
        Updates</h2>
    <ul>
        <li><strong>24 APR 2010</strong> - Updated download instructions.</li>
        <li><strong>19 APR 2010</strong> - Published source code on CodePlex Online Source Control.
            Updated article to reflect this information.</li>
    </ul>
</body>
</html>
